package io;

import java.io.*;

/**
 * java将流分为两类:节点流和处理流
 * 节点流:也称为低级流:特点是实际连接程序与另一端的"管道",负责实际读写数据的流
 * 处理流:(也成为高级流):特点是不能独立存在,必须连接在其他流上,目的是当前数据经过当前流时
 * 对该数据进行某种加工操作,简化我们的同等工作
 * 文件流就是一堆典型的低级流,因为它是实际连接程序与文件之间的"管道",负责实际读写文件数据的流
 *
 * 实际开发过程中我们经常会串联一些....
 *
 * 缓冲流:java.io.BufferedInputStream和BufferedOutputStream
 */
public class CopyDemo3 {
    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("girl.jpg");
        BufferedInputStream bis = new BufferedInputStream(fis);

        FileOutputStream fos = new FileOutputStream("girls.jpg");

        BufferedOutputStream bos = new BufferedOutputStream(fos);

        int d;
        long time1 = System.currentTimeMillis();
        while ((d = bis.read()) != -1) {
            bos.write(d);
        }
        long time2 = System.currentTimeMillis();
        System.out.println("复制完毕,耗时:" + (time2 - time1) + "ms");
    }
}
